﻿namespace NTLib.Core.Configuration
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;

    /// <summary>
    /// Define a class that could provide some configuration.
    /// </summary>
    public interface IConfigurationProvider
    {
        /// <summary>
        /// Collects the configuration value.
        /// </summary>
        /// <remarks>Other solution than 'object' to define the context could be imagine</remarks>
        /// <returns>Return the collection of value extract from the describe process</returns>
        ConfigurationCollection CollectConfigurationValue(Type host, object context = null, CancellationToken token = default(CancellationToken));
    }
}
